package org.ccay.excel.importer.validate;

import org.ccay.excel.importer.ITitleMapper;
import org.ccay.excel.importer.RowData;
import org.ccay.excel.meta.ColumnMeta;
import org.ccay.excel.meta.SheetMeta;

/**
 * 验证的上下文。
 * 一个Sheet对应一个IValidationContext	
 * @author chaowangbang
 * @since Mar 13, 2012
 */
public interface IValidationContext {
	
	/**
	 * 获取当前正在校验的行的索引号	
	 * @author chaowangbang
	 * @since Mar 20, 2012
	 * @return
	 */
	public int getRowIndex();
	
	/** 获取当前正在校验的列的索引号
	 * @author chaowangbang
	 * @since Mar 20, 2012
	 * @return
	 */
	public String getColIndex();
	
	/**
	 * 获取当前正在处理的Sheet的元数据信息。
	 * 	
	 * @author chaowangbang
	 * @since Mar 13, 2012
	 * @return
	 */
	public SheetMeta getSheetMeta();
	
	/**
	 * 获取当前正在处理的Column的元数据信息。
	 * 
	 * @return
	 */
	public ColumnMeta getColumnMeta();
	
	/** 获取当前正在校验的行数据集	
	 * @author chaowangbang
	 * @since Mar 14, 2012
	 * @return
	 */
	public RowData getCurrentRowDatas();
	
	/** 
	 * 根据消息的主键获取对应的消息定义。
	 * 	
	 * @author chaowangbang
	 * @since Mar 27, 2012
	 * @param messageKey
	 * @return
	 */
	public String getText(String messageKey, String defaultMessage, IValidator validator);
	
	/**
	 * 获取标题映射信息。
	 * 
	 * @return
	 */
	public ITitleMapper getTitleMapper();

}
